import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  // 登录页面 - 不需要登录权限
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/Login.vue'),
    meta: { requiresAuth: false }
  },
  // 主页面 - 需要登录权限
  {
    path: '/',
    name: 'Main',
    component: () => import('@/views/Main.vue'),
    meta: { requiresAuth: true },
    redirect: '/dashboard',
    children: [
      {
        path: 'dashboard',
        name: 'Dashboard',
        component: () => import('@/views/Dashboard.vue'),
        meta: { requiresAuth: true, title: '首页' }
      },
      // 用户管理页面
      {
        path: 'user',
        name: 'User',
        component: () => import('@/views/User.vue'),
        meta: { requiresAuth: true, title: '用户管理' }
      },
      // 部门管理页面
      {
        path: 'department',
        name: 'Department',
        component: () => import('@/views/Department.vue'),
        meta: { requiresAuth: true, title: '部门管理' }
      },
      // 成本项目管理页面
      {
        path: 'cost-item',
        name: 'CostItem',
        component: () => import('@/views/CostItem.vue'),
        meta: { requiresAuth: true, title: '成本项目管理' }
      },
      // 成本记录管理页面
      {
        path: 'cost-record',
        name: 'CostRecord',
        component: () => import('@/views/CostRecord.vue'),
        meta: { requiresAuth: true, title: '成本记录管理' }
      },
      // 预算配置页面
      {
        path: 'budget-config',
        name: 'BudgetConfig',
        component: () => import('@/views/BudgetConfig.vue'),
        meta: { requiresAuth: true, title: '预算配置管理' }
      }
    ]
  },
  // 404页面，当访问不存在的路由时重定向到首页
  {
    path: '/:pathMatch(.*)*',
    redirect: '/dashboard'
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// 全局前置守卫
router.beforeEach((to, from, next) => {
  // 检查路由是否需要认证
  const requiresAuth = to.matched.some(record => record.meta.requiresAuth !== false)
  
  if (requiresAuth) {
    // 获取存储的token
    const token = localStorage.getItem('token')
    
    // 如果没有token且需要认证，则重定向到登录页面
    if (!token) {
      next({ path: '/login', query: { redirect: to.fullPath } })
    } else {
      // 有token，允许访问
      next()
    }
  } else {
    // 不需要认证的路由直接访问
    next()
  }
})

export default router